package com.project.controller.web;

import com.project.myBeans.R;
import com.project.service.ClassService;
import com.project.service.base.BaseService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.web.bind.annotation.*;
import com.project.entity.Class;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * @Author: TateBrown
 * @date: 2018/5/26 0:11
 * @param:
 * @return:
 */
@EnableAutoConfiguration
@RestController
@RequestMapping("/class")
@Api(description = "班级接口", value = "class")
public class ClassController extends BaseService{

    @Autowired
    private ClassService classService;


    /**
     * TateBrown 2018年5月25日
     *
     * @param majorid
     * @return
     */
    @ApiOperation("根据专业批量查找班级")
    @GetMapping("/findBatchByMajorid/{majorid}")
    public R findBatchByMajorid(@PathVariable("majorid") Integer majorid){
        try{
            List<Class> classes=classService.findBatchByMajorid(majorid);
            return R.ok("获取成功").put("data",classes);
        }catch (Exception e){
            e.printStackTrace();
            return R.error("程序异常");
        }
    }
    /**
     * TateBrown 2018年5月26日
     *
     * @param clazz
     * @return
     */
    @ApiOperation("添加单个班级")
    @PostMapping("/addOne")
    public R addOne(@RequestBody Class clazz){
        try{
            if(classService.checkClassIsExist(clazz)){
                return R.error("班级已存在!");
            }
            else{
                classService.add(clazz);
                return R.ok("添加成功");
            }

        }catch (Exception e){
            e.printStackTrace();
            return R.error("程序异常");
        }
    }
    /**
     * TateBrown 2018年5月26日
     *
     * @param clazz
     * @return
     */
    @ApiOperation("检查班级是否已存在")
    @PostMapping("/checkMajorIsExist")
    public  R checkMajorIsExst(@RequestBody Class clazz){
        try{
            if(classService.checkClassIsExist(clazz)){
                return R.error("班级已存在");
            }
            else{
                return R.ok("班级不存在");
            }
        }catch (Exception e){
            e.printStackTrace();
            return R.error("程序异常");
        }
    }
    /**
     * TateBrown 2018年5月26日
     *
     * @param clazz
     * @return
     */
    @ApiOperation("修改单条班级记录")
    @PostMapping("/modifyOneById")
    public R modifyOneById(@RequestBody Class clazz){
        try{
            if(checkDeleteUpdateIsSuccess(classService.modify(clazz))){
                return R.ok("修改成功");
            } else {
                return R.error("修改失败");
            }
        }catch (Exception e){
            e.printStackTrace();
            return R.error("程序异常");
        }
    }
    /**
     * TateBrown 2018年5月26日
     *
     * @param id
     * @return
     */
    @ApiOperation("根据id级联删除相关班级下所有记录")
    @GetMapping("/removeOneById/{id}")
    public R removeOneById(@PathVariable("id") Integer id, HttpServletRequest request){
        try{
            classService.removeOneChain(id);
            return R.ok("删除成功");
        }catch (Exception e){
            e.printStackTrace();
            return R.error("删除失败程序异常");
        }
    }
    /**
     * TateBrown 2018年5月26日
     *
     * @param id
     * @return
     */
    @ApiOperation("根据id查看单条记录")
    @GetMapping("/findOneById/{id}")
    public R findOneById(@PathVariable("id") Integer id){
        try{
            return R.ok("获取成功").put("data",classService.findOne(id));
        }catch(Exception e){
            e.printStackTrace();
            return R.error("程序异常");
        }
    }
}
